package model

// Hero 英雄表结构体
type Hero struct {
	HeroID          int     `gorm:"primaryKey;autoIncrement;column:hero_id;comment:英雄ID"`
	HeroName        string  `gorm:"type:varchar(50);not null;column:hero_name;comment:英雄名称"`
	ClassID         int     `gorm:"not null;column:class_id;comment:职业ID"`
	Hp              int     `gorm:"not null;column:hp;comment:生命值"`
	Atk             int     `gorm:"not null;column:atk;comment:攻击力"`
	Def             int     `gorm:"not null;column:def;comment:防御力"`
	Spd             int     `gorm:"not null;column:spd;comment:速度"`
	MagicPower      int     `gorm:"not null;column:magic_power;comment:魔法攻击力"`
	CritRate        float64 `gorm:"type:float;not null;default:0.05;column:crit_rate;comment:暴击率"`
	CritDamage      float64 `gorm:"type:float;not null;default:1.5;column:crit_damage;comment:暴击伤害"`
	HealEffect      float64 `gorm:"type:float;not null;default:1.0;column:heal_effect;comment:治疗效果"`
	DamageReduction float64 `gorm:"type:float;not null;default:0.0;column:damage_reduction;comment:伤害减免"`
	Description     *string `gorm:"type:text;default:null;column:description;comment:英雄描述"`
}

// 自定义表名
func (Hero) TableName() string {
	return "heroes"
}

// 英雄职业表结构体
type HeroClass struct {
	ClassID     int    `gorm:"primaryKey;autoIncrement;column:class_id;comment:职业ID"`
	ClassName   string `gorm:"type:varchar(50);not null;column:class_name;comment:职业名称"`
	Description string `gorm:"type:text;default:null;column:description;comment:职业描述"`
}

// 自定义表名
func (HeroClass) TableName() string {
	return "hero_classes"
}

type Skill struct {
	SkillID     int    `gorm:"primaryKey;autoIncrement;column:skill_id;comment:技能ID"`
	HeroID      int    `gorm:"not null;index:idx_hero_id;column:hero_id;comment:所属英雄ID"`
	SkillName   string `gorm:"type:varchar(50);not null;column:skill_name;comment:技能名称"`
	Cooldown    int    `gorm:"not null;column:cooldown;comment:冷却回合数"`
	TargetType  int8   `gorm:"type:tinyint;not null;column:target_type;comment:目标类型：1-敌方前排，2-敌方后排，3-敌方全体，4-友方单体，5-友方全体，6-自身"`
	Description string `gorm:"type:text;column:description;comment:技能描述"`
	Ultimate    int    `gorm:"column:ultimate;comment:是否是大招"`
}

// 自定义表名
func (Skill) TableName() string {
	return "skills"
}

type SkillEffect struct {
	EffectID    int    `gorm:"primaryKey;autoIncrement;column:effect_id;comment:效果ID"`
	SkillID     int    `gorm:"not null;index:idx_skill_id;column:skill_id;comment:关联skills.skill_id"`
	EffectType  int    `gorm:"type:int(11);not null;column:effect_type;comment:效果类型"`
	ValueType   int    `gorm:"type:int(11);not null;column:value_type;comment:数值类型"`
	Value       int    `gorm:"not null;column:value;comment:效果数值"`
	Duration    int    `gorm:"not null;default:0;column:duration;comment:持续回合数"`
	Chance      int    `gorm:"not null;default:1;column:chance;comment:触发几率"`
	Description string `gorm:"type:text;column:description;comment:效果描述"`
}

// 自定义表名
func (SkillEffect) TableName() string {
	return "skill_effects"
}
